<!--
Aide en ligne de Jaint
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
    <body style ="font-size:15 ; font-family : MS Georgia ; text-align : justify">

      <p style="text-align: center; color: rgb(51, 102, 255); font-size: 40px;">Plugins</p>

     <img style="position: absolute; left: 10; top: 10" src="./Images/Jaint.jpg" alt="jaint" height="50" width="50" align="right">

     <br><br>
        <h2 style ="color:#CC0033">Example d'utilisation des plugins : </h2><br>
        <p style ="text-align : left;">
            Dans cette partie seront présenté les différentes utilisation des plugins<br>
            


        </p><br>

        <h3 style="color : #3333FF">Plugin AsciiArt</h3>
        <p style ="text-align : left;">

			L'art ASCII consiste à réaliser des images uniquement à l'aide des lettres et caractères spéciaux contenus dans le code ASCII.<br>
			<br>

			Exemple : Un petit fantôme<br>
			<pre>                          oooo$$$$$$$$$$$$oooo
                      oo$$$$$$$$$$$$$$$$$$$$$$$$o
                   oo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o         o$   $$ o$
   o $ oo        o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o       $$ $$ $$o$
oo $ $ "$      o$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$o       $$$o$$o$
"$$$$$$o$     o$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$o    $$$$$$$$
  $$$$$$$    $$$$$$$$$$$      $$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$
  $$$$$$$$$$$$$$$$$$$$$$$    $$$$$$$$$$$$$    $$$$$$$$$$$$$$  """$$$
   "$$$""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$
    $$$   o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     "$$$o
   o$$"   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$       $$$o
   $$$    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" "$$$$$$ooooo$$$$o
  o$$$oooo$$$$$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$   o$$$$$$$$$$$$$$$$$
  $$$$$$$$"$$$$   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$     $$$$""""""""
 """"       $$$$    "$$$$$$$$$$$$$$$$$$$$$$$$$$$$"      o$$$
            "$$$o     """$$$$$$$$$$$$$$$$$$"$$"         $$$
              $$$o          "$$""$$$$$$""""           o$$$
               $$$$o                                o$$$"
                "$$$$o      o$$$$$$o"$$$$o        o$$$$
                  "$$$$$oo     ""$$$$o$$$$$o   o$$$$""
                     ""$$$$$oooo  "$$$o$$$$$$$$$"""
                        ""$$$$$$$oo $$$$$$$$$$
                                """"$$$$$$$$$$$
                                    $$$$$$$$$$$$
                                     $$$$$$$$$$"
                                      "$$$""  
</pre>
			<br>
            La zone de texte permet d'entrer la taille des caractères<br>
            L'image au centre représente un apercu avec la taille des caractères souhaités<br>
            Pour appliquer l'effet à l'image il suffit de cliquer sur l'image au centre<br>
            Pour revenir à l'image d'origine et donc ne pas appliquer l'effet il suffit de fermer la fenetre de travail du plugin, en cliquant sur la croix<br>

        </p><br>
        <p style ="text-align : center;">
            <img src="Images/ascii.jpg" width="424" height="372" alt="ascii"/>

        </p><br>


        <h3 style="color : #3333FF">Plugin Saturation</h3>
        <p style ="text-align : left;">


            Dans ce plugin, l'image du centre représente une prévisualisation de l'effet qui sera appliqué à l'image<br>
            Pour diminuer la saturation de l'image il suffit de cliquer sur l'image de gauche<br>
            Pour augmenter la saturation de l'image il suffit de cliquer sur l'image de droite<br>
            Pour appliquer l'effet à l'image il suffit de cliquer sur l'image au centre<br>
            Pour revenir à l'image d'origine et donc ne pas appliquer l'effet il suffit de fermer la fenetre de travail du plugin, en cliquant sur la croix<br>
            
        </p><br>
       <p style ="text-align : center;">
           <img src="Images/sat.jpg" width="1276" height="278" alt="sat"/>

        </p><br>


       <h3 style="color : #3333FF">Plugin Luminosité / Contraste</h3>
       <p style ="text-align : left;">


           Pour augmenter ou diminuer la luminosité ou le contraste il suffit de cliquer sur les boutons correspondants<br>
           Pour appliquer l'effet à l'image il suffit de cliquer sur l'image au centre<br>
           Pour revenir à l'image d'origine et donc ne pas appliquer l'effet il suffit de fermer la fenetre de travail du plugin, en cliquant sur la croix<br>

       </p><br>
       <p style ="text-align : center;">
           <img src="Images/lumi.jpg" width="1060" height="693" alt="lumi"/>

        </p><br>


       <h3 style="color : #3333FF">Plugin Torsion</h3>
       <p style ="text-align : left;">

           Pour choisir le centre de l'effet il suffit de cliquer sur l'image de gauche, le centre de l'effet est représenté par la petite punaise<br>
           Le potentiometre permet de choisir le sens et l'angle de la rotation (vers la droite : angle négatif, vers la gauche : angle positif)<br>
           Pour appliquer l'effet à l'image il suffit de cliquer sur l'image a droite<br>
           Pour revenir à l'image d'origine et donc ne pas appliquer l'effet il suffit de fermer la fenetre de travail du plugin, en cliquant sur la croix<br>
        </p><br>
       <p style ="text-align : center;">
           <img src="Images/torsion.jpg" width="785" height="362" alt="torsion"/>

        </p><br>


       <h3 style="color : #3333FF">Plugin Redimensionnement</h3>
       <p style ="text-align : left;">

           La premiere case représente la hauteur de l'image en pixel<br>
           La seconde représente la largeur de l'image en pixel<br>
           Pour garder le ratio de l'image il suffit de cocher la case<br>
           Pour appliquer l'effet à l'image il suffit de cliquer sur le bouton en bas, un nouvel onglet sera créé<br>
           Pour revenir à l'image d'origine et donc ne pas appliquer l'effet il suffit de fermer la fenetre de travail du plugin, en cliquant sur la croix<br>
        </p><br>
       <p style ="text-align : center;">
           <img src="Images/redim.jpg" width="177" height="266" alt="redim"/>

        </p><br>



       <h2 style ="color:#CC0033">Gestionnaire de plugins </h2><br>
       <p style ="text-align : left;">
           Dans le gestionnaire de plugins on retrouve le nom du plugin, la déscription de l'effet qu'il applique et si est activé ou désactivé<br>

           Il permet de :
       <ul>
           <li>Ajouter un plugin, avec le bouton ajouter ou gràce au glisser - déposer (Drag and Drop)</li>
           <li>Supprimer un plugin</li>
           <li>Activer ou désactiver des plugins pour éviter d'avoir une trop grosse liste de plugin disponible dans le menu</li>
       </ul>

        </p><br>
       <p style ="text-align : center;">
           <img src="Images/gestio.jpg" width="872" height="654" alt="gestio"/>


        </p><br>



        <h2 style ="color:#CC0033">Creation de plugins </h2><br>
        <p style ="text-align : left;">
            Dans cette partie nous allons apprendre comment créer son propre puglin<br>
        <ol>
            <li>Créer une classe qui implemente interface Plugin</li>
            <li>Redéfinir toutes les méthodes de l'interface Plugin : </li>
            <code><br>
                /**<br>
                * Retourne le nom du plugin.<br>
                * @return<br>
                */<br>
                public String getName();<br><br><br><br>

                /**<br>
                * Retourne le nom de l'auteur du plugin.<br>
                * @return<br>
                */<br>
                public String getDescri();<br><br><br><br>

                /**<br>
                *  Envoie si un plugin est activé ou non<br>
                *<br>
                * @return<br>
                */<br>
                public boolean isEnabled();<br><br><br><br>

                /**<br>
                *  Modification du boolean enabled<br>
                *<br>
                * @return<br>
                */<br>
                public void setEnabled(boolean b);<br><br><br><br>

                /**
                * Méthode qui prend en parametre une miniature de l'image courante et qui renvoie l'icone du plugin<br>
                * Avec les paramètres souhaité<br>
                *<br>
                * @param	img	l'image sur laquelle appliquer les modifications<br>
                * @return<br>
                */<br>
                public BufferedImage applyEffectIcon(BufferedImage img);<br><br><br><br>

                /*<br>
                * Méthode générale qui appelle tous les autres méthodes<br>
                * quand on applique un plugin<br>
                */<br>
                public BufferedImage modify(BufferedImage img);<br><br><br><br>


                /*<br>
                * Méthode qui renvoie le nombre de fois que l'effet<br>
                * doit être appliqué à l'icone afin de voir un résultat<br>
                *<br>
                */<br>
                public int getNbApplyPlug();<br>

            </code>

            <li>Compiler le .java du plugin </li>
            <li>Ajouter le .class du plugin grace au gestionnaire de plugin ou grace au Glisser - deposer</li>



        </ol>


        </p><br>

        <h3 style="color : #3333FF">Exemple de plugin :</h3>
        <br><br>

        <code>


            package JaintPlug;<br><br>

            import java.awt.image.BufferedImage;<br>
            import java.awt.image.ConvolveOp;<br>
            import java.awt.image.Kernel;<br>
            import Jaint.Plugin;<br>
            import java.awt.Graphics2D;<br><br><br><br>


            public class Double implements Plugin<br><br>
            {<br>
                private boolean estActive = true;<br>
                private int nbApplyPlug = 1;<br><br>

                public String getName()<br>
                {<br>
                        return("Double");<br>
                }<br><br>

                public String getDescri()<br>
                {<br>
                        return("Les traits de l'image sont doublés");<br>
                }<br><br>

                public boolean isEnabled()<br>
                {<br>
                    return estActive;<br>
                }<br><br>

                public void setEnabled(boolean b)<br>
                {<br>
                    estActive = b;<br>
                }<br><br>

                public BufferedImage modify(BufferedImage img)<br>
                {<br>
                    if(img.getType() == BufferedImage.TYPE_3BYTE_BGR)<br>
                    {<br>
                            BufferedImage src = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_RGB);<br>
                            Graphics2D g = src.createGraphics();<br>
                            g.drawRenderedImage(img, null);<br>
                            g.dispose();<br>
                            img = src;<br>
                    }<br><br>

                    BufferedImage bi = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_RGB);<br><br>

                    bi = applyEffectPlugin(img);<br><br>

                    return bi;<br><br>

                }<br><br>

                public BufferedImage applyEffectIcon(BufferedImage img)<br>
                {<br>
                    BufferedImage icon = applyEffectPlugin(img);<br>
                    return icon;<br>
                }<br><br>


                public BufferedImage applyEffectPlugin(BufferedImage img)<br>
                {<br>
                    Kernel kernel = new Kernel(5, 5, new float[] {-1f/-7f, -2f/-7f, -1f/-7f, -2f/-7f, -1f/-7f, 2f/-7f, -1f/-7f, 2f/-7f, -1f/-7f, 2f/-7f, -1f/-7f, -2f/-7f, 5f/-7f, -2f/-7f, -1f/-7f, 2f/-7f, -1f/-7f, 2f/-7f, -1f/-7f, 2f/-7f, -1f/-7f, -2f/-7f, -1f/-7f, -2f/-7f, -1f/-7f});<br>

                    ConvolveOp op = new ConvolveOp(kernel);<br>
                    BufferedImage bi = op.filter(img, null);<br>
                    return bi;<br>
                }<br><br>

                public int getNbApplyPlug()<br>
                {<br>
                    return nbApplyPlug;<br>
                }<br>
            }<br>

        </code>


















        </code>

         

 <a href="./index.html"> <h3 style ="color:#0099FF ; text-align: center;">Retour à l'accueil</h3></a>
  </body>
</html>
